Currently, the use of cloud computing is increasing at an ever faster rate. Cloud computing is heralding an era of consumption based pricing and has the potential to transform computing to a utility like electricity and water services. The pay-as-you go model brings elasticity and cost savings as computing power is provided by the cloud provider for peak loads, e.g., during peak load periods, additional instances can be added.
Software total cost of ownership (TCO) is a well known term used to describe the financial impact of deploying an Information Technology (IT) product over its life cycle. Whether software TCO increases or decrease is largely in the hands of software developers. Although software development plays a large role in software TCO, there are several factors that affect it. Traditionally, the factors affecting TCO include software and hardware, training and maintenance. Software that is hard to use, maintain or learn is thus deemed to be costly software. Costly software products are thus likely the result of bad software architecture and poor developer skills.
Whereas up until now, architectural decisions and developer skills had only an indirect impact on software TCO, in the near future software architectures and developers will directly impact the software TCO due to the increasing use of cloud services and cloud hosting. Simply changing a single line of code can lead to either money saved or money spent. Thus, developers will need to give careful consideration to decisions regarding storage, networking and transaction behavior of software applications.
Software architecture deals with the structure of the software product. The architecture defines attributes such as scalability, maintainability, security, robustness, etc. Cost oriented architecture design emphasizes those attributes that reduce the software TCO with regard to deployment and operation in the cloud. For example, the structure of a software product can be composed of several services, some of them hosted in the cloud while others are hosted on a company server farm. The effort to minimize TCO may dictate which services are deployed in the cloud or on premise.
There is thus a need for a cost oriented profiler that is capable of analyzing application behavior in terms of cost and provide recommendations to reduce the software TCO. The profiler should provide a developer with information regarding the number of lines of code, functions and API calls that directly influence the software TCO of the application. In addition, the profiler should be able to compare two versions of the code and determine if a change to the code will either save or waste money.